package org.ciallo.simplemusicplayer.util;

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import androidx.appcompat.app.AppCompatDelegate;

/**
 * @author Jukomu
 * @Description: 主题切换相关的工具类
 * @Package: org.ciallo.simplemusicplayer.util
 * @Project: SimpleMusicPlayer
 * @name: ThemeUtil
 * @Date: 2025/6/2-00:27
 * @Filename: ThemeUtil
 */
public class ThemeUtil {
    // SharedPreferences 中保存主题模式的 key
    public static final String PREF_THEME_KEY = "pref_theme_mode";

    /**
     * 获取当前保存的主题模式。
     * @param context Context.
     * @return 当前的主题模式 (例如 AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)。
     */
    public static int getCurrentNightMode(Context context) {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        // 从 SharedPreferences 中以 String 类型读取，然后转换为 int
        // 默认值是 "-1" (字符串), 对应 AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
        String modeString = prefs.getString(PREF_THEME_KEY, String.valueOf(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM));
        try {
            return Integer.parseInt(modeString);
        } catch (NumberFormatException e) {
            // 如果解析失败，返回默认值
            return AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
        }
    }

    /**
     * 应用并保存新的主题模式。
     * @param context Context.
     * @param mode 新的主题模式值。
     */
    public static void applyAndSaveNightMode(Context context, int mode) {
        // 1. 应用主题
        AppCompatDelegate.setDefaultNightMode(mode);

        // 2. 将主题模式值以 String 类型保存到 SharedPreferences
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        prefs.edit().putString(PREF_THEME_KEY, String.valueOf(mode)).apply();
    }
}
